package com.jrx.anytxn.transaction.dto.interfaceinfo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jrx.anytxn.i18n.annotation.ConvertField;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author yf
 * date  2019/9/9 0009
 * @ClassName GlInterfaceInfoRes
 * 总账流水表的res响应实体
 * @Version V1.0
 **/
public class GlInterfaceInfoRes implements Serializable {

    private static final long serialVersionUID = 1319304764777614643L;

    /**
     * 主键
     * 表字段:id
     */
    private Long id;

    /**
     * 租戶id
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 流水号
     * 表字段:gl_flowno
     */
    private String glFlowno;

    /**
     * 业务日期(YYYYMMDD)
     * 表字段:gl_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date glDate;

    /**
     * 批次号(源系统可以按照一定逻辑生成（比如每次生成一个数据文件，同时生成一个批次号），目前一阶段每日仅有一个批次文件，规则：YYYYMMDD＋01)
     * 表字段:batch_id
     */
    private String batchId;

    /**
     * 机构号
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 消费信贷核算事件对应的交易码 具体值：按照消费信贷系统规范约定会计引擎模块会维护与消费信贷系统一致的数据字典
     * 表字段:txn_code
     */
    private String txnCode;

    /**
     * 交易金额
     * 表字段:amount
     */
    private BigDecimal amount;

    /**
     * 贷款id
     * 表字段:loan_id
     */
    private String loanId;

    /**
     * 贷款产品id
     * 表字段:loan_product_id
     */
    private String loanProductId;

    /**
     * 客户号
     * 表字段:customer_id
     */
    private String customerId;

    /**
     * 交易描述(业务行摘要说明，源系统可视情况自动生成)
     * 表字段:txn_desc
     */
    @ConvertField(fieldCode = "", fieldTable = "pr_transaction_code_table", fieldType = "2")
    private String txnDesc;

    /**
     * 交易账户号
     * 表字段:txn_account_id
     */
    private String txnAccountId;

    /**
     * 五级分类(0 = 正常 1 = 关注  2 = 次级  3 = 可疑 4 = 损失)
     * 表字段:loan_classify
     */
    private String loanClassify;

    /**
     * 类别(0=应计 1=非应计)
     * 表字段:category
     */
    private String category;

    /**
     * 贷款是否发生单笔减值(0 = 否 1 = 是 固定值0)
     * 表字段:impair_flag
     */
    private String impairFlag;

    /**
     * 数据来源(固定值CLS)
     * 表字段:gl_source
     */
    private String glSource;

    /**
     * 渠道
     * 表字段:channel
     */
    private String channel;

    /**
     * 备用字段
     * 表字段:attribute_reserve1
     */
    private String attributeReserve1;

    /**
     * 备用字段
     * 表字段:attribute_reserve2
     */
    private String attributeReserve2;

    /**
     * 备用字段
     * 表字段:attribute_reserve3
     */
    private String attributeReserve3;

    /**
     * 备用字段
     * 表字段:attribute_reserve4
     */
    private String attributeReserve4;

    /**
     * 创建时间
     * 表字段:create_time
     */
    private Date createTime;

    /**
     * 最后更新时间
     * 表字段:update_time
     */
    private Date updateTime;

    /**
     * 最后更新操作员
     * 表字段:update_by
     */
    private String updateBy;

    /**
     * 记录版本号
     * 表字段:record_version_number
     */
    private Integer recordVersionNumber;

    /**
     * 子渠道id
     * 表字段:sub_channel
     */
    private String subChannel;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getGlFlowno() {
        return glFlowno;
    }

    public void setGlFlowno(String glFlowno) {
        this.glFlowno = glFlowno;
    }

    public Date getGlDate() {
        return glDate;
    }

    public void setGlDate(Date glDate) {
        this.glDate = glDate;
    }

    public String getBatchId() {
        return batchId;
    }

    public void setBatchId(String batchId) {
        this.batchId = batchId;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getTxnCode() {
        return txnCode;
    }

    public void setTxnCode(String txnCode) {
        this.txnCode = txnCode;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    public String getLoanProductId() {
        return loanProductId;
    }

    public void setLoanProductId(String loanProductId) {
        this.loanProductId = loanProductId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getTxnDesc() {
        return txnDesc;
    }

    public void setTxnDesc(String txnDesc) {
        this.txnDesc = txnDesc;
    }

    public String getTxnAccountId() {
        return txnAccountId;
    }

    public void setTxnAccountId(String txnAccountId) {
        this.txnAccountId = txnAccountId;
    }

    public String getLoanClassify() {
        return loanClassify;
    }

    public void setLoanClassify(String loanClassify) {
        this.loanClassify = loanClassify;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getImpairFlag() {
        return impairFlag;
    }

    public void setImpairFlag(String impairFlag) {
        this.impairFlag = impairFlag;
    }

    public String getGlSource() {
        return glSource;
    }

    public void setGlSource(String glSource) {
        this.glSource = glSource;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getAttributeReserve1() {
        return attributeReserve1;
    }

    public void setAttributeReserve1(String attributeReserve1) {
        this.attributeReserve1 = attributeReserve1;
    }

    public String getAttributeReserve2() {
        return attributeReserve2;
    }

    public void setAttributeReserve2(String attributeReserve2) {
        this.attributeReserve2 = attributeReserve2;
    }

    public String getAttributeReserve3() {
        return attributeReserve3;
    }

    public void setAttributeReserve3(String attributeReserve3) {
        this.attributeReserve3 = attributeReserve3;
    }

    public String getAttributeReserve4() {
        return attributeReserve4;
    }

    public void setAttributeReserve4(String attributeReserve4) {
        this.attributeReserve4 = attributeReserve4;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public Integer getRecordVersionNumber() {
        return recordVersionNumber;
    }

    public void setRecordVersionNumber(Integer recordVersionNumber) {
        this.recordVersionNumber = recordVersionNumber;
    }

    public String getSubChannel() {
        return subChannel;
    }

    public void setSubChannel(String subChannel) {
        this.subChannel = subChannel;
    }
}
